package com.wutao.panzh.admin.service.Impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.panzh.entity.DispalySku;
import com.panzh.entity.HotelItemSku;
import com.panzh.entity.HotelItemSpu;
import com.panzh.entity.InformationItem;
import com.panzh.myconst.ProjectParames;
import com.wutao.panzh.admin.mapper.HotelSaleAttrMapper;
import com.wutao.panzh.admin.mapper.HotelSkuMapper;
import com.wutao.panzh.service.HotelSkuService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Service
public class HotelSkuServiceImple implements HotelSkuService {

    @Autowired
    private HotelSaleAttrMapper hotelSaleAttrMapper;

    @Autowired
    private HotelSkuMapper hotelSkuMapper;


    @Override
    public void saveHotelItemSku(HotelItemSku hotelItemSku, HashMap<Integer, Integer> saleAttrIdAndSaleAttrValueId, ArrayList<String> saleAttrNums) {
        //这时候，我们要查；
        hotelSkuMapper.insertHotelItemSku(hotelItemSku);

        HotelItemSku hotelItemSku1 = new HotelItemSku();
        hotelItemSku1.setHotelName(hotelItemSku.getHotelName());
        HotelItemSku hotelItemSku2 = hotelSkuMapper.selectOne(hotelItemSku);

        Integer skuId = hotelItemSku2.getId();
        //插入单值属性；
        for (Integer key : saleAttrIdAndSaleAttrValueId.keySet()) {
            Integer value = saleAttrIdAndSaleAttrValueId.get(key);
            hotelSaleAttrMapper.insertHotelSkuSaleAttrValue(skuId,key,value);
        }
        
        //多值属性；
        for (String saleAttrName : saleAttrNums) {
            Integer hotelSaleAttrValueId = hotelSaleAttrMapper.selectIdBySaleAttrValueName(saleAttrName);
            hotelSaleAttrMapper.insertHotelSkuSaleAttrValue(skuId, ProjectParames.SALE_ATTR_VALUE_OTHER_ID,hotelSaleAttrValueId);
        }

    }

    @Override
    public List<HotelItemSku> selectHotelSkuBySpuIdAndSkuName(String spuId, String skuName) {
        HotelItemSku hotelItemSku = new HotelItemSku();
        hotelItemSku.setHotelItemSpuId(Integer.parseInt(spuId));
        hotelItemSku.setHotelName(skuName);
        List<HotelItemSku> skus = hotelSkuMapper.select(hotelItemSku);
        return skus;
    }

    @Override
    public List<DispalySku> getDispalyHotelSkuPage() {
        List<DispalySku> dispalySkus = hotelSkuMapper.selectAllDispalySku();
        return dispalySkus;
    }

    @Override
    public void deleteHotelItemSku(String hotelItemId) {
        //第一步，删除hotel_item_sku中的信息；因为不能再一个标签中多个sql语句，所以只能进行单补删除；
        hotelSkuMapper.deleteHotelSku(hotelItemId);
        hotelSkuMapper.deleteHotelSkuAttr(hotelItemId);

    }

    @Override
    public List<DispalySku> getDispalyHotelSkuPageBySpuId(String spuId) {
        return hotelSkuMapper.selectDispalyHotelSkuPageBySpuId(spuId);
    }

    @Override
    public void addBookHotel(String skuId, String userId) {
        hotelSkuMapper.insertBookHotel(skuId,userId);
    }


    //这个模块启动分页可能会出现问题，所以我们就不启动分页了！
//    public PageInfo<DispalySku> getDispalyHotelSkuPage(Integer pageNo, Integer pageSize, String keyword) {
//        //使用PageHelper启动分页；
//        PageHelper.startPage(pageNo,pageSize);
//        //一定要注意pageHelper的版本问题，写文档的时候进行查询
//        //https://blog.csdn.net/qq_31204567/article/details/78172168；该网站会有你想要的信息
//        List<DispalySku> dispalySkus = hotelSkuMapper.selectFroSearch(keyword);
//        //封装成PageInfo进行返回
//        PageInfo<DispalySku> pageInfo = new PageInfo<>(dispalySkus);
//        return pageInfo;
//    }

}
